package com.simple.auth.domain.dto;

import com.simple.common.exception.ServiceException;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description 认证用户请求参数
 * @Author xiaoke
 * @Date 2024/8/10 18:00
 * @Version 1.0
 */
@Data
public class AuthParamsDto {
    //用户名
    private String username;
    //密码
    private String password;
    //手机号
    private String cellphone;
    //验证码
    private String code;
    //验证码key
    private String codeKey;
    @NotBlank(message = "认证类型不能为空")
    // 认证的类型   password:用户名密码模式类型    sms:短信模式类型
    private String authType;
    //附加数据，作为扩展，不同认证类型可拥有不同的附加数据。如认证类型为短信时包含smsKey : sms:3d21042d054548b08477142bbca95cfa; 所有情况下都包含clientId
    private Map<String, Object> payload = new HashMap<>();

    public void checkPassword() {
        if (username == null || username.equals("")) {
            throw new ServiceException("账号不能为空");
        }
        if (password == null || password.equals("")) {
            throw new ServiceException("密码不能为空");
        }
        if(code == null || code.equals("")) {
            throw new ServiceException("验证码不能为空");
        }
        if(codeKey == null || codeKey.equals("")) {
            throw new ServiceException("验证码key不能为空");
        }
    }

    public void checkSms() {
        if (cellphone == null || cellphone.equals("")) {
            throw new ServiceException("手机号不能为空");
        }
        if (code == null || code.equals("")) {
            throw new ServiceException("验证码不能为空");
        }
    }
}
